﻿#pragma once
#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define Infinity 9999//表示无穷大 
#define MaxVertexNum 20 
#define MAX 40 
#define key 14//key为顶点个数 
typedef struct arcell//边的权值信息
{
	int adj;//权值  
}arcell, adjmatrix[MaxVertexNum][MaxVertexNum];
typedef struct vexsinfo//顶点信息 
{
	int position;//景点的编号 
	char name[32];//景点的名称 
	char introduction[256];//景点的介绍 
}vexsinfo;
typedef struct mgraph//图结构信息
{
	vexsinfo vexs[MaxVertexNum];//顶点向量（数组） 
	adjmatrix arcs;//邻接矩阵 
	int vexnum, arcnum;//顶点数和边数 
}mgraph;
mgraph campus; int d[30];
int visited[30];
int shortest[MaxVertexNum][MaxVertexNum];//定义全局变量存储最小路径 
int pathh[MaxVertexNum][MaxVertexNum];//定义存储路径 

//1.图的创建
mgraph initgraph();
//2.查找景点在图中的序号
int locatevex(mgraph c, int v);
//3.查找并输出序号为m,n景点间的路径 
void path(mgraph c, int m, int n, int k);
//4.查找两景点间的景点的所有路径
int allpath(mgraph c);
//5.用迪杰斯特拉算法，求出一个景点到其他景点间的最短路径，
void shortestpath_dij(mgraph c);
//6.菜单 
void menu();
//7.更新图的部分信息。
int newgraph(mgraph* c);
//8.增加一条边。
int enarc(mgraph* c);
//9.增加一个结点。
int envex(mgraph* c);
//10.删除图的一个顶点。
int delvex(mgraph* c);
//11.删除图的一条边。
int delarc(mgraph* c);
//12.查询两景点间的最短路径
void floyd(mgraph c);
//13.任意两点间最短距离
void display(mgraph c, int i, int j);
//14.查询景点的信息
int shortdistance(mgraph c);
//15.显示所有景点信息
void browsecompus(mgraph c);
